import cv2
import numpy as np

# 对图像做8*8的DCT变换
def text(x, y):
    img_secret = np.zeros((64, 64),dtype=np.uint8)
    for i in range(img_len//8):
        for j in range(img_row//8):
            # 拿出每一个小分块
            sub_fig = img[i*8:i*8+8, j*8:j*8+8]
            # 对其进行dct变换
            sub_fig = np.float32(sub_fig)
            ref = cv2.dct(sub_fig)
            # 将隐藏的图像内容拿出并合并在图像矩阵上
            img_secret[i][j] = ref[x][y]*10
    cv2.imshow('test',img_secret.astype(np.uint8))
    cv2.waitKey(0) # 在窗口显示图像，并等待用户按下任意键

    # 将秘密图片内容保存起来
    cv2.imwrite('藏起来的图.png',img_secret)

if __name__ == '__main__':
    # 打开文件
    img = cv2.imread('./secret.png', 0)
    print(img.shape)
    cv2.imshow('秘密', img)
    (img_len, img_row) = img.shape

    # 下面在对9种可能性进行了遍历
    # for i in range(3,6):
    #     for j in range(3,6):
    #         text(i,j)
    # 最后找到了张三将秘密图像的信息藏在了（5，3）中
    text(5,3)
